module fpu_rounder
#(parameter length_val=52)
(
    input fp_sign,
    input [1:0]roundmode,
    input [length_val+1:0]datai,
    output reg [length_val-1:0]datao
);
always@(*)
begin
    case(roundmode)
    3'b000://NEAREST
    begin
        if(datai[1:0]<2'b10)
            datao=datai[length_val+1:2];
        else if(datai[1:0]>2'b10)
            datao=datai[length_val+1:2]+1;
        else
            datao=(datai[3])?datai[length_val+1:2]+1:datai[length_val+1:2];
    end
    3'b001://ZERO
    begin
        datao=datai[length_val+1:2];
    end
    3'b010://+INF
    begin
        if(fp_sign)datao=datai[length_val+1:2];
        else datao=datai[length_val+1:2]+1;
    end
    3'b011://-INF
    begin
        if(fp_sign)datao=datai[length_val+1:2]+1;
        else datao=datai[length_val+1:2];
    end
    3'b011://NEREAST-TIED TO MAXIMUM
    begin
        if(datai[1:0]<2'b10)
            datao=datai[length_val+1:2];
        else if(datai[1:0]>=2'b10)
            datao=datai[length_val+1:2]+1;
    end
    endcase
end


endmodule
